const { Schema } = require('mongoose')
const mongoose = require('mongoose')

// 用户表
const users = mongoose.model("users", mongoose.Schema({
    username: {type:String, required: true, unique: true},
    password: {type:String, required: true,
        set(val) {  // 加密密码
            return require('bcrypt').hashSync(val, 10)
        }    
    },
    autograph: {type: String},  // 个性签名
    email: {type: String},      // 个人邮箱
    usersite: {type: String},   // 用户网站
    group: {type:String, default: 'guest'},  // 用户组，用于区分游客和管理员[只有管理员能设置] 待定
    status: {type:Number, default: 1},       // 状态：0:标记为删除，1:可用
}))

// 设置表
const options = mongoose.model('options', mongoose.Schema({
    username: {type:String, required: true, unique: true}, 
    siteTitle: {type: String, required: true},
    siteUrl: {type: String, required: true},
    description: {type: String, default: 'just so so..'},
    keywords: Array,
    disRegister: {type:Number, default: 1},  // 普通用户是否可以注册 1:开启；0禁用

    // 评论设置
    reply: {type: Boolean, default:true},        // 启用用户回复
    showSiteUrl: {type: Boolean, default:true},  // 启用显示用户主页链接
    showGravatar: {type: Boolean, default:false},// 启用Gravater头像服务
    showPaging: {type: Boolean, default:true},   // 启用分页
    pagingNum: {type: Number, default:10},       // 分页评论数量
    showAllReply: {type: Boolean, default:true}, // 启用文章回复功能
    maxReplyNum: {type: Number, default:10},     // 最大回复数量
    sort: {type: Number, default:1},             // 排序方式，-1逆序

    auditComment: {type: Boolean, default:false}, // 评论需要审核
    auditEmail: {type: Boolean, default:true},    // 必须填写邮箱
    auditSiteUrl: {type: Boolean, default:false},   // 必须填写网址
    auditTimer: {type: Number, default:1}           // 同一IP评论发布间隔时间，单位分钟（作者没有时间间隔）
}))

// 评论表
const comments = mongoose.model("comments", mongoose.Schema({
    aid: {type: Schema.Types.ObjectId, required: true},  // 评论所属的文章id
    nid: {type: Schema.Types.ObjectId},  // 父评论id
    author: {type: String, required: true}, // 作者名称
    callAuthor: {type: String}, // 作者名称
    ua: String,     // 用户UserAgent
    content: String,
    createAt: {type: Date, default: Date.now()},
    disComment: {type:Number, default: 0}  // 是否可以回复 1:开启；0禁用
}))

// 文章表
const contents = mongoose.model("contents", mongoose.Schema({
    title: {type: String, required: true, index: true},
    cid: {type: Schema.Types.ObjectId},  // 分类id
    author: String,                      // 用户名
    uid: {type: Schema.Types.ObjectId},  // 用户id
    content: {type: String, required: true},
    createAt: {type: Date, default: Date.now()},
    hot: {type:Number, default: 10},
    tags: {type:Array, default: ['日常']},  // 标签列表
    disComment: {type:Number, default: 0}  // 是否可以评论 1:开启；0禁用
}))

// 自定义页面表
const pages = mongoose.model("pages", mongoose.Schema({
    page: {type: String, required: true, index: true},      // 自定义页面唯一名称
    title: String,  // 页面标题
    meta: String,   // 页面描述
    isMark: {type: Boolean, default: true}, // 是否为Markdown
    content: {type: String, required: true},
    createAt: {type: Date, default: Date.now()},
    disComment: {type:Number, default: 0},  // 是否可以评论 1:开启；0禁用
    disShow: {type:Number, default: 0}   // 是否公开 1:开启；0禁用
}))

// 分类表
const category = mongoose.model("category", mongoose.Schema({
    title: {type: String, unique: true, required: true},
    description: String,
    createAt: {type: Date, default: Date.now()},
    count: {type: Number, default: 0}
}))

 
module.exports = {
    users,contents,category,comments,pages,options
}